# encoding: utf-8
module BootstrapHelper

	#
	#
	def alert_div(options = {}, &block)
		type = options[:type]
		content_tag(:div, :class => "alert alert-#{type} text-left spacer") do
			capture(&block)
		end
	end
	
	#
	# Cria um painel com abas usando o bootstrap.
	# params é um hash que deve conter os seguintes valores:
	# - :tabs = Um hash onde a chave é o id da aba, e o valor, o seu título
	# - options = Um hash que deve conter os seguintes valores:
	#		- :active = id da tab inicialmente ativa.
	#		- :type = tipo de painel ("tabs" ou "pills")
	# Exemplo:
	#
	#	<%= tab_panel(:tabs => {:a => "A", :b => "B"}, :options => { :active => :a, :type => "tabs" }) do %>
	#		<%= tab_pane(:id => :a) do %>
	#			<p>aaa</p>
	#		<% end %>
	#		<%= tab_pane(:id => :b) do %>
	#			<p>bbb</p>
	#		<% end %>
	#	<% end %>
	#
	def tab_panel(params = {}, &block)
		tabs 			= params[:tabs] || {}
		options 	= params[:options] || {}
		active 		= options[:active] || tabs.keys[0]
		type			= options[:type] || "tabs"

		@global_tab_ops = { :active => active }

		# div principal do painel
	  content_tag(:div, :class => "block") do
			concat(
				# abas com seus respectivos títulos
				content_tag(:ul, :id => "myTab", :class => "nav nav-#{type}") do
					tabs.keys.collect do |t|
						content_tag(:li,
							content_tag(:a, tabs[t], :href => "##{t}", "data-toggle" => "tab"),
							:class => "#{active == t ? 'active' : ' '}"
						)
					end.join.html_safe
				end
			)

			#conteúdo das abas
	  	concat(tab_content(&block))
	  end
	end

	#
	# Adiciona o conteúdo de um pane.
	#
	# options é um hash que deve conter os seguintes valores:
	# - :id = id do pane. Deve ser um id fornecido no tab_panel.
	#
	def tab_pane(options, &block)
		id = options[:id]
		
		active = @global_tab_ops[:active] == id

		content_tag(:div, :class => "tab-pane #{active ? ' active' : ''}", :id => id) do
			concat(capture(&block))
		end
	end

	#
	#
	def modal_dialog(title = nil, html = {}, &block)
		html[:class] = (!html[:class].nil?) ? html[:class] + " modal" : "modal"
	
		content_tag(:div, html) do
			content_tag(:div, :class => "modal-header") do
				content_tag(:button, "×", :type => "button", :class => "close", "data-dismiss" => "modal") +
				content_tag(:h3, title)
			end +
			content_tag(:div, :class => "modal-body") do
				capture(&block)
			end
		end
	end

	private

	#
	#
	def tab_content(&block)
		content_tag(:div, :class => "tab-content") do
			concat(capture(&block))
		end
	end
end
